package com.xian.im.modules.im.core;

import com.xian.im.common.model.dto.GroupDto;
import com.xian.im.common.model.from.GroupFrom;
import com.xian.im.common.model.vo.GroupVo;
import com.xian.im.modules.im.entity.GroupEntity;

import java.util.Set;

/**
 * @program: renrenio-renren-fast-master
 * @description: 群组核心处理
 * @author: liru.xian
 * @create: 2021-01-15 18:08
 **/
public interface IGroupCoreService {

    /**
     *  创建群组
     * @return
     */
    GroupVo createGroup(GroupFrom from);

    /**
     *  修改群组
     * @return
     */
    GroupVo updateGroup(GroupFrom from);

    /**
     *  删除群组 By uniqId
     * @return
     */
    Boolean delGroupByUniqId(String uniqId);
    /**
     *  删除群组 By uniqId
     * @return
     */
    Boolean delGroupByUniqId(String uniqId, Long orgId);

    /**
     *  修改群主
     *
     *  @param uniqId 群组IM 账号
     * @return
     */
    Boolean updateGroupOwner(String ownerAccount, String uniqId);

    /**
     *  修改群主
     *
     *  @param uniqId 群组IM 账号
     * @return
     */
    Boolean updateGroupOwner(String ownerAccount, String uniqId, Long orgId);

    /**
     *
     * @param uniqId
     * @return
     */
    GroupVo getEntityByUniqueId(String uniqId);
    /**
     * @param uniqId
     * @return
     */
    GroupDto getDtoByUniqueId(String uniqId);
    /**
     *
     * @param uniqId
     * @return
     */
    GroupEntity getEntityByUniqueId(String uniqId, Long orgId);

    /**
     *
     * @param uniqId
     * @return  true 正常 false 是禁言
     */
    Boolean groupMute(String uniqId);

    /**
     *
     * @param uniqId
     * @return  true 正常 false 是禁言
     */
    Boolean groupMute(String uniqId, Long orgId);

    /**
     *  全体禁言
     *  @param uniqId 群组IM 账号
     * @return
     */
    Boolean shutUp(String uniqId);

    /**
     *  全体禁言
     *  @param uniqId 群组IM 账号
     * @return
     */
    Boolean shutUp(String uniqId, Long orgId);

    /**
     *  解除禁言
     * @param uniqId 群组IM 账号
     * @return
     */
    Boolean unmute(String uniqId);

    /**
     *  解除禁言
     * @param uniqId 群组IM 账号
     * @return
     */
    Boolean unmute(String uniqId, Long orgId);

    /**
     *
     * @return
     */
    Set<String> getAllGroupAccount();
    
}
